#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>
#include <time.h>

#include "constantes.h"
#include "donnees.h"
#include "fonction.h"
#include "graphique.h"


void OnQuitter(GtkWidget* widget, gpointer data)
{
    GtkWidget *pQuestion;

    pQuestion = gtk_message_dialog_new(GTK_WINDOW(data),
        GTK_DIALOG_MODAL,
        GTK_MESSAGE_QUESTION,
        GTK_BUTTONS_YES_NO,
        "Voulez vous vraiment\n"
        "quitter le programme?");

    switch(gtk_dialog_run(GTK_DIALOG(pQuestion)))
    {
        case GTK_RESPONSE_YES:
            liberation_alloc_tab(promo, tab_stpi, tab_externe, groupe_A, groupe_B, tab_binome_groupe_A, tab_binome_groupe_B);
            gtk_main_quit();
            break;
        case GTK_RESPONSE_NONE:
        case GTK_RESPONSE_NO:
            gtk_widget_destroy(pQuestion);
            break;
    }
}

void OnAbout(GtkWidget* widget, gpointer data)
{
    GtkWidget *pAbout;

    pAbout = gtk_message_dialog_new (GTK_WINDOW(data),GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK,"SuperTrombi\n Greg Micka Erwan Max !!");

    gtk_dialog_run(GTK_DIALOG(pAbout));

    gtk_widget_destroy(pAbout);
}

void Fermer(GtkWidget* widget, gpointer data)
{
    gtk_list_store_clear(pListStore);
    gtk_list_store_clear(pListStore2);
    liberation_alloc_tab(promo, tab_stpi, tab_externe, groupe_A, groupe_B, tab_binome_groupe_A, tab_binome_groupe_B);

}

void saisie(GtkButton *button)
{
    GtkWidget *selection;
    selection = gtk_file_selection_new( g_locale_to_utf8( "Sélectionnez un fichier", -1, NULL, NULL, NULL) );
    gtk_widget_show(selection);
    g_signal_connect(G_OBJECT(GTK_FILE_SELECTION(selection)->ok_button), "clicked", G_CALLBACK(importation), selection );
    g_signal_connect_swapped(G_OBJECT(GTK_FILE_SELECTION(selection)->cancel_button), "clicked", G_CALLBACK(gtk_widget_destroy), selection);
}

/*
 * Lit les donnees a partir d'un fichier CSV et les affiches dans le tableau des etudiants.
 * Calcul et cree les groupes et les binomes.
 * Affiche les
 */
void importation(GtkWidget *bouton, GtkWidget *file_selection, gchar* chemin)
{
	int i;
	gchar *NOM;
	gchar *PRENOM;
	gchar *ORIGINE;
	gchar *LOGIN;
	FILE* excel=NULL;
	GtkWidget *selection;

	PRENOM			 = g_malloc(30);
	NOM				 = g_malloc(30);
	ORIGINE			 = g_malloc(30);
	LOGIN			 = g_malloc(30);

	selection = gtk_file_selection_new( g_locale_to_utf8( "Sélectionnez un fichier", -1, NULL, NULL, NULL) );
	chemin = gtk_file_selection_get_filename(GTK_FILE_SELECTION (file_selection) );
	excel = fopen(chemin,"r");
	if (excel == NULL)
	{
		GtkWidget *dialog;
		dialog = gtk_message_dialog_new(GTK_WINDOW(file_selection), GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Impossible d'ouvrir le fichier : \n%s", g_locale_to_utf8(chemin, -1, NULL, NULL, NULL));
		gtk_dialog_run(GTK_DIALOG(dialog));
		gtk_widget_destroy(dialog);
		gtk_widget_destroy(file_selection);
		return;
	}
	else
	{
		Nb_etudiants= Nombredelignes(excel);
		promo =(Etudiant*)malloc (sizeof(Etudiant)*Nb_etudiants); //allocation mémoire pour le tableau structure représentant le CSV
		if(promo == NULL)
		{
		    printf("problem memoire promo");
		    return EXIT_FAILURE;
		}
		ExtractionCSV(excel, Nb_etudiants,promo);
        photo(promo,Nb_etudiants);
		for(i = 0 ; i < Nb_etudiants ; ++i)
		{
			GtkTreeIter pIter;
			sprintf(NOM, "%s", promo[i].nom);
			sprintf(PRENOM, "%s", promo[i].prenom);
			sprintf(ORIGINE, "%s", promo[i].origine);
			sprintf(LOGIN, "%s", promo[i].login);
			/* Creation de la nouvelle ligne */
			gtk_list_store_append(pListStore, &pIter);
			/* Mise a jour des donnees */
			gtk_list_store_set(pListStore, &pIter,COLONNE_NOM, NOM,COLONNE_PRENOM, PRENOM,COLONNE_ORIGINE,ORIGINE, COLONNE_LOGIN, LOGIN,-1);
		}
	}

	//on detruit la fenetre de dialogue pour la selection des fichiers
	gtk_widget_destroy(file_selection);

	//
	//calcul des donnees pour la creation des groupes et des binomes.
	//

	//calcul de nombres d'etudiants STPI et externes
	stpi    = comptage_stpi(promo, Nb_etudiants);
	externe = comptage_externe(stpi, Nb_etudiants);

	//nb etu groupe A
	Nb_groupe_A  = (stpi/2)+(externe/2);
	Nb_binomes_A = Nb_binome_groupe(Nb_groupe_A);

	//nb etu groupe B
	Nb_groupe_B  = Nb_etudiants - Nb_groupe_A;
	Nb_binomes_B = Nb_binome_groupe(Nb_groupe_B);

	tab_stpi    = (Etudiant*)malloc (sizeof(Etudiant)*stpi);		//allocation memoire pour le tableau structure représentant les stpi
	tab_externe = (Etudiant*)malloc (sizeof(Etudiant)*externe);  //allocation memoire pour le tableau structure représentant les externes

    if(tab_stpi == NULL || tab_externe == NULL)
    {
        printf("problem memoire stpi ou externe");
        return EXIT_FAILURE;
    }

	groupe_A =(Etudiant*)malloc (sizeof(Etudiant)*Nb_groupe_A); //allocation memoire pour le tableau structure représentant le CSV
	groupe_B =(Etudiant*)malloc (sizeof(Etudiant)*Nb_groupe_B); //allocation memoire pour le tableau structure représentant le CSV
    if(groupe_A == NULL || groupe_B == NULL)
    {
        printf("problem memoire groupe A ou B");
        return EXIT_FAILURE;
    }

	tab_binome_groupe_A = (Binome*)malloc (sizeof(Binome)*Nb_binomes_A);
	tab_binome_groupe_B = (Binome*)malloc (sizeof(Binome)*Nb_binomes_B);
    if(tab_binome_groupe_A == NULL || tab_binome_groupe_B == NULL)
    {
        printf("problem memoire binome A ou B");
        EXIT_FAILURE;
    }

	repartition_stpi_externe(promo,tab_stpi,tab_externe,Nb_etudiants);
	creation_groupe(promo, tab_stpi,tab_externe,stpi,externe,groupe_A,groupe_B,Nb_groupe_A,Nb_groupe_B);
	creation_binome(tab_binome_groupe_A,groupe_A,Nb_groupe_A,Nb_binomes_A);  // on teste d'abord pour le groupe A et on fait copier coller pour le groupe B
	creation_binome(tab_binome_groupe_B,groupe_B,Nb_groupe_B,Nb_binomes_B);  // on teste d'abord pour le groupe A et on fait copier coller pour le groupe B

	//Attention cette fonction a ete libere la memoire alloue au tableau promo.
	//or ce tabkleau sera reutilise plus trad dans la fonction promo2 !
	//donc verfier ce qui doit etre liberer par cette fonction de ce qui ne devrait pas l'etre.

	g_free(PRENOM);
	g_free(NOM);
	g_free(ORIGINE);
	g_free(LOGIN);
	fclose(excel);
}

void afficherTableau1(GtkWidget * vbox1)
{
    GtkWidget *pListView;
    GtkWidget *pScrollbar;
    GtkTreeViewColumn *pColumn;
    GtkCellRenderer *pCellRenderer;
    /* Creation du modele */
    pListStore = gtk_list_store_new(N_COLUMN,  G_TYPE_STRING,  G_TYPE_STRING, G_TYPE_STRING,G_TYPE_STRING);

    /* Creation de la vue */
    pListView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pListStore));

    /* Creation de la premiere colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Nom", pCellRenderer, "text", COLONNE_NOM, NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);

    /* Creation de la deuxieme colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Prenom",pCellRenderer, "text", COLONNE_PRENOM,NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);

    /* Creation de la 3eme colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Origine",pCellRenderer, "text", COLONNE_ORIGINE,NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);

   /* Creation de la 4eme colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Login",pCellRenderer, "text", COLONNE_LOGIN,NULL);

     /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);

    /* Ajout de la vue a la fenetre */
    pScrollbar = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);

    /* on ajoute le tableau dansla boite de la Scrollbar */
    gtk_container_add(GTK_CONTAINER(pScrollbar), pListView);

    /*on ajout la scrolbar dans la vb1 */
    gtk_container_add(GTK_CONTAINER(vbox1), pScrollbar);
}

void afficherTableau2(GtkWidget * vbox1)
{
    GtkWidget *pListView2;
    GtkWidget *pScrollbar2;
    GtkTreeViewColumn *pColumn;
    GtkCellRenderer *pCellRenderer;
    pListStore2 = gtk_list_store_new(N_COLUMN2,  G_TYPE_STRING,  G_TYPE_STRING);

    /* Creation de la vue */
    pListView2 = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pListStore2));

    /* Creation de la premiere colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Nom", pCellRenderer, "text", COLONNE_NOM2, NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView2), pColumn);

    /* Creation de la deuxieme colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Prenom",pCellRenderer, "text", COLONNE_PRENOM2,NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView2), pColumn);

    /* Ajout de la vue a la fenetre */
    pScrollbar2 = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar2),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);

    /* on ajoute le tableau dansla boite de la Scrollbar */
    gtk_container_add(GTK_CONTAINER(pScrollbar2), pListView2);

    /*on ajout la scrolbar dans la vb1 */
    gtk_container_add(GTK_CONTAINER(vbox1), pScrollbar2);

}

/*
 * Affiche la liste de la promo.
 */
void promo2(GtkWidget *widget, gpointer data)
{
	int i;
	GtkTreeIter pIter2;

	gchar * NOM;
	gchar * PRENOM;
	PRENOM	= g_malloc(30);
	NOM		= g_malloc(30);

    gtk_list_store_clear(pListStore2);

    selection=0;

	// NOUS VOULONS AFFICHER LE TABLEAU DE LA PROMO
	for(i = 0 ; i < Nb_etudiants ; i++)
	{

		sprintf(NOM, "%s", promo[i].nom);
		sprintf(PRENOM, "%s", promo[i].prenom);
		//Creation de la nouvelle ligne
		gtk_list_store_append(pListStore2, &pIter2);

		// Mise a jour des donnees
		gtk_list_store_set(pListStore2, &pIter2,COLONNE_NOM2, NOM,COLONNE_PRENOM2, PRENOM,-1);
	}

	g_free(PRENOM);
	g_free(NOM);
}

/* affiche le groupe A*/
void groupeA(GtkWidget *widget, gpointer data)
{
	int i;
	GtkTreeIter pIter2;

	gchar * NOM;
	gchar * PRENOM;
	PRENOM	= g_malloc(30);
	NOM		= g_malloc(30);

	gtk_list_store_clear(pListStore2);

    selection=1;

	// NOUS VOULONS AFFICHER LE TABLEAU DU GROUPE A
	for(i = 0 ; i < Nb_groupe_A; i++)
	{

		sprintf(NOM, "%s", groupe_A[i].nom);
		sprintf(PRENOM, "%s", groupe_A[i].prenom);
		//Creation de la nouvelle ligne
		gtk_list_store_append(pListStore2, &pIter2);

		// Mise a jour des donnees
		gtk_list_store_set(pListStore2, &pIter2,COLONNE_NOM2, NOM,COLONNE_PRENOM2, PRENOM,-1);
	}

	g_free(PRENOM);
	g_free(NOM);
}

/* affiche le groupe B*/
void groupeB(GtkWidget *widget, gpointer data)
{
	int i;
	GtkTreeIter pIter2;

	gchar * NOM;
	gchar * PRENOM;
	PRENOM	= g_malloc(30);
	NOM		= g_malloc(30);

    gtk_list_store_clear(pListStore2);

    selection=2;

	// NOUS VOULONS AFFICHER LE TABLEAU Du GROUPE B
	for(i = 0 ; i < Nb_groupe_B ; i++)
	{

		sprintf(NOM, "%s", groupe_B[i].nom);
		sprintf(PRENOM, "%s", groupe_B[i].prenom);
		//Creation de la nouvelle ligne
		gtk_list_store_append(pListStore2, &pIter2);

		// Mise a jour des donnees
		gtk_list_store_set(pListStore2, &pIter2,COLONNE_NOM2, NOM,COLONNE_PRENOM2, PRENOM,-1);
	}

	g_free(PRENOM);
	g_free(NOM);
}


/* affiche les stpi*/
void stpi_fonction(GtkWidget *widget, gpointer data)
{
	int i;
	GtkTreeIter pIter2;

	gchar * NOM;
	gchar * PRENOM;
	PRENOM	= g_malloc(30);
	NOM		= g_malloc(30);

	gtk_list_store_clear(pListStore2);

    selection=3;

	// NOUS VOULONS AFFICHER LE TABLEAU DES STPI
	for(i = 0 ; i < stpi ; i++)
	{

		sprintf(NOM, "%s", tab_stpi[i].nom);
		sprintf(PRENOM, "%s", tab_stpi[i].prenom);
		//Creation de la nouvelle ligne
		gtk_list_store_append(pListStore2, &pIter2);

		// Mise a jour des donnees
		gtk_list_store_set(pListStore2, &pIter2,COLONNE_NOM2, NOM,COLONNE_PRENOM2, PRENOM,-1);
	}

	g_free(PRENOM);
	g_free(NOM);
}

/* affiche les externes*/
void externe_fonction(GtkWidget *widget, gpointer data)
{
	int i;
	GtkTreeIter pIter2;

	gchar * NOM;
	gchar * PRENOM;
	PRENOM	= g_malloc(30);
	NOM		= g_malloc(30);

    selection=4;

	gtk_list_store_clear(pListStore2);

	// NOUS VOULONS AFFICHER LE TABLEAU DES EXTERNES
	for(i = 0 ; i < externe ; i++)
	{

		sprintf(NOM, "%s", tab_externe[i].nom);
		sprintf(PRENOM, "%s", tab_externe[i].prenom);
		//Creation de la nouvelle ligne
		gtk_list_store_append(pListStore2, &pIter2);

		// Mise a jour des donnees
		gtk_list_store_set(pListStore2, &pIter2,COLONNE_NOM2, NOM,COLONNE_PRENOM2, PRENOM,-1);
	}

	g_free(PRENOM);
	g_free(NOM);
}

void binomeA(GtkWidget *widget, gpointer data)
{
    GtkWidget *pWindow2;
    pWindow2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(pWindow2, 480, 240);
	gtk_window_set_title(GTK_WINDOW(pWindow2), "Binomes Groupe A");

	GtkWidget *pListView2;
    GtkWidget *pScrollbar2;
    GtkTreeViewColumn *pColumn;
    GtkCellRenderer *pCellRenderer;
    GtkWidget * vbox;

    vbox =gtk_vbox_new(TRUE, 0);

    gtk_container_add(GTK_CONTAINER(pWindow2), vbox);

    pListStore2 = gtk_list_store_new(N_COLUMN2,  G_TYPE_STRING,  G_TYPE_STRING);

    /* Creation de la vue */
    pListView2 = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pListStore2));

    /* Creation de la premiere colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("BA1", pCellRenderer, "text", B1, NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView2), pColumn);

    /* Creation de la deuxieme colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("BA2",pCellRenderer, "text", B2,NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView2), pColumn);

    /* Ajout de la vue a la fenetre */
    pScrollbar2 = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar2),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);

    /* on ajoute le tableau dansla boite de la Scrollbar */
    gtk_container_add(GTK_CONTAINER(pScrollbar2), pListView2);

    /*on ajout la scrolbar dans la vb1 */
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);

	int i;
	GtkTreeIter pIter2;

	gchar * BA1;
	gchar * BA2;
	BA1	= g_malloc(30);
	BA2	= g_malloc(30);

	gtk_list_store_clear(pListStore2);

    selection=5;

	// NOUS VOULONS AFFICHER LE TABLEAU DES EXTERNES
	for(i = 0 ; i < Nb_binomes_A; i++)
	{

		sprintf(BA1, "%s", tab_binome_groupe_A[i].b1.nom);
		sprintf(BA2, "%s", tab_binome_groupe_A[i].b2.nom);
		//Creation de la nouvelle ligne
		gtk_list_store_append(pListStore2, &pIter2);

		// Mise a jour des donnees
		gtk_list_store_set(pListStore2, &pIter2,B1, BA1,B2, BA2,-1);
	}

	g_free(BA1);
	g_free(BA2);
    gtk_widget_show_all(pWindow2);
}

void binomeB(GtkWidget *widget, gpointer data)
{
    GtkWidget *pWindow2;
    pWindow2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(pWindow2, 480, 240);
	gtk_window_set_title(GTK_WINDOW(pWindow2), "Binomes Groupe A");

	GtkWidget *pListView2;
    GtkWidget *pScrollbar2;
    GtkTreeViewColumn *pColumn;
    GtkCellRenderer *pCellRenderer;
    GtkWidget * vbox;

    vbox =gtk_vbox_new(TRUE, 0);

    gtk_container_add(GTK_CONTAINER(pWindow2), vbox);

    pListStore2 = gtk_list_store_new(N_COLUMN2,  G_TYPE_STRING,  G_TYPE_STRING);

    /* Creation de la vue */
    pListView2 = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pListStore2));

    /* Creation de la premiere colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("BA1", pCellRenderer, "text", B1, NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView2), pColumn);

    /* Creation de la deuxieme colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("BA2",pCellRenderer, "text", B2,NULL);

    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView2), pColumn);

    /* Ajout de la vue a la fenetre */
    pScrollbar2 = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar2),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);

    /* on ajoute le tableau dansla boite de la Scrollbar */
    gtk_container_add(GTK_CONTAINER(pScrollbar2), pListView2);

    /*on ajout la scrolbar dans la vb1 */
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);

	int i;
	GtkTreeIter pIter2;

	gchar * BB1;
	gchar * BB2;
	BB1	= g_malloc(30);
	BB2	= g_malloc(30);

	gtk_list_store_clear(pListStore2);

	selection=6;

	// NOUS VOULONS AFFICHER LE TABLEAU DES EXTERNES
	for(i = 0 ; i < Nb_binomes_B ; i++)
	{

		sprintf(BB1, "%s", tab_binome_groupe_B[i].b1.nom);
		sprintf(BB2, "%s", tab_binome_groupe_B[i].b2.nom);
		//Creation de la nouvelle ligne
		gtk_list_store_append(pListStore2, &pIter2);

		// Mise a jour des donnees
		gtk_list_store_set(pListStore2, &pIter2,B1, BB1,B2, BB2,-1);
	}

	g_free(BB1);
	g_free(BB2);
    gtk_widget_show_all(pWindow2);
}

//Affichage des photos

void trombiphoto(GtkWidget *widget, gpointer data)
{
    int i,j;
    int k=0;
    GtkWidget *pWindow2;
    GtkWidget *pImage;
    GtkWidget *pQuitImage;
    GtkWidget *pScrollbar2;
    GtkWidget *pQuitBtn;
    GtkWidget * Table;
    GtkWidget * vbox;

//Création d'une fenêtre qui va afficher les photos

    pWindow2 = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(pWindow2,1280,800);
	gtk_window_set_title(GTK_WINDOW(pWindow2), "Trombi Photo");

    pScrollbar2 = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar2), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);

    vbox =gtk_vbox_new(TRUE, 0);

    gtk_container_add(GTK_CONTAINER(pWindow2), vbox);

// Affichage des images grâce à une double boucle qui parcours le tableau et ajoute une image dans chaque case
// Pour l'affichage du tableau promo

if (selection==0){
    k=0;
   Table=gtk_table_new(((Nb_etudiants/5)+1),5,TRUE);
   gtk_table_set_homogeneous(Table,FALSE);
    for(i=0;i<5;i++)
    {

    	for (j=0;j<((Nb_etudiants/5)+1);j++)
    	{

            pImage = gtk_image_new_from_file(promo[k].chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i, i+1);/*colonne 0 - 1 ligne 0- 1*/
            k++;
		}
	}

	gtk_container_add(GTK_BOX(pWindow2), vbox);
    gtk_container_add(GTK_CONTAINER(pScrollbar2), Table);
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);
    gtk_widget_show_all(pWindow2);
    }

// Pour l'affichage du tableau groupe A

if (selection==1){
    k=0;
   Table=gtk_table_new(((Nb_groupe_A/5)+1),5,TRUE);
   gtk_table_set_homogeneous(Table,FALSE);
    for(i=0;i<5;i++)
    {

    	for (j=0;j<((Nb_groupe_A/5)+1);j++)
    	{

            pImage = gtk_image_new_from_file(groupe_A[k].chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i, i+1);/*colonne 0 - 1 ligne 0- 1*/
            k++;
		}
	}
	gtk_container_add(GTK_BOX(pWindow2), vbox);
    gtk_container_add(GTK_CONTAINER(pScrollbar2), Table);
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);
    gtk_widget_show_all(pWindow2);
    }

// Pour l'affichage du tableau groupe B

    if (selection==2){
    k=0;
   Table=gtk_table_new(((Nb_groupe_B/5)+1),5,TRUE);
   gtk_table_set_homogeneous(Table,FALSE);
    for(i=0;i<5;i++)
    {

    	for (j=0;j<((Nb_groupe_B/5)+1);j++)
    	{

            pImage = gtk_image_new_from_file(groupe_B[k].chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i, i+1);/*colonne 0 - 1 ligne 0- 1*/
            k++;
		}
	}
	gtk_container_add(GTK_BOX(pWindow2), vbox);
    gtk_container_add(GTK_CONTAINER(pScrollbar2), Table);
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);
    gtk_widget_show_all(pWindow2);
    }

// Pour l'affichage du tableau STPI

	if (selection==3){
    k=0;
   Table=gtk_table_new(((stpi/5)+1),5,TRUE);
   gtk_table_set_homogeneous(Table,FALSE);
    for(i=0;i<5;i++)
    {
    	for (j=0;j<((stpi/5)+1);j++)
    	{
            pImage = gtk_image_new_from_file(tab_stpi[k].chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i, i+1);/*colonne 0 - 1 ligne 0- 1*/
            k++;
		}
	}
	gtk_container_add(GTK_BOX(pWindow2), vbox);
    gtk_container_add(GTK_CONTAINER(pScrollbar2), Table);
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);
    gtk_widget_show_all(pWindow2);
    }

// Pour l'affichage du tableau externe

    if (selection==4){
    k=0;
   Table=gtk_table_new(((externe/5)+1),5,TRUE);
   gtk_table_set_homogeneous(Table,FALSE); //permet de mettre chaque case à la taille de l'image
    for(i=0;i<5;i++)
    {
    	for (j=0;j<((externe/5)+1);j++)
    	{
            pImage = gtk_image_new_from_file(tab_externe[k].chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i, i+1);/*colonne 0 - 1 ligne 0- 1*/
            k++;
		}
	}
	gtk_container_add(GTK_BOX(pWindow2), vbox);
    gtk_container_add(GTK_CONTAINER(pScrollbar2), Table);
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);
    gtk_widget_show_all(pWindow2);
    }


// Pour l'affichage des binomes du groupe A l'un en dessous de l'autre

    if (selection==5){
    k=0;
   Table=gtk_table_new(Nb_binomes_A,2,TRUE);
   gtk_table_set_homogeneous(Table,FALSE); //permet de mettre chaque case à la taille de l'image
    for(i=0;i<1;i++)
    {
    	for (j=0;j<Nb_binomes_A;j++)
    	{
            pImage = gtk_image_new_from_file(tab_binome_groupe_A[k].b1.chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i,i+1);/*colonne 0 - 1 ligne 0- 1*/
            k++;
		}
    }
       k=0;
	  for(i=1;i<2;i++)
    {
    	for (j=0;j<Nb_binomes_A;j++)
    	{
            pImage = gtk_image_new_from_file(tab_binome_groupe_A[k].b2.chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i,i+1);
            k++;
		}
	}
	gtk_container_add(GTK_BOX(pWindow2), vbox);
    gtk_container_add(GTK_CONTAINER(pScrollbar2), Table);
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);
    gtk_widget_show_all(pWindow2);
    }

// Pour l'affichage des binomes du groupe B l'un en dessous de l'autre

    if (selection==6){
    k=0;
   Table=gtk_table_new(Nb_binomes_B,2,TRUE);
   gtk_table_set_homogeneous(Table,FALSE); //permet de mettre chaque case à la taille de l'image
    for(i=0;i<1;i++)
    {
    	for (j=0;j<Nb_binomes_B;j++)
    	{
            pImage = gtk_image_new_from_file(tab_binome_groupe_B[k].b1.chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i,i+1);/*colonne 0 - 1 ligne 0- 1*/
            k++;
		}
    }
       k=0;
	  for(i=1;i<2;i++)
    {
    	for (j=0;j<Nb_binomes_B;j++)
    	{
            pImage = gtk_image_new_from_file(tab_binome_groupe_B[k].b2.chemin_photo);
            pImage= OnZoomIn(pImage);
            gtk_table_attach_defaults(GTK_TABLE(Table), pImage, j, j+1, i,i+1);
            k++;
		}
	}
	gtk_container_add(GTK_BOX(pWindow2), vbox);
    gtk_container_add(GTK_CONTAINER(pScrollbar2), Table);
    gtk_container_add(GTK_CONTAINER(vbox), pScrollbar2);
    gtk_widget_show_all(pWindow2);
    }
}



GtkWidget *OnZoomIn(GtkWidget *pImage)
{

	GdkPixbuf *pSrcPixbuf, *pDestPixbuf;
	gint iWidth, iHeight;

	// Recuperation du GdkPixbuf //
	pSrcPixbuf = gtk_image_get_pixbuf(GTK_IMAGE(pImage));
	// Recuperation de la taille de l'image //
	iWidth = gdk_pixbuf_get_width(pSrcPixbuf);
	iHeight = gdk_pixbuf_get_height(pSrcPixbuf);
	// Creation du nouveau GdkPixbuf //
	pDestPixbuf = gdk_pixbuf_scale_simple(pSrcPixbuf, iWidth-200, iHeight-250, GDK_INTERP_HYPER);
	// Remplacement de l'ancien GdkPixbuf par le nouveau //
	gtk_image_set_from_pixbuf(GTK_IMAGE(pImage), pDestPixbuf);

	g_object_unref(pDestPixbuf);
	return pImage;
}
